package com.example.dine.call.mapper;

import com.example.dine.call.entity.DiningTable;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * DiningTableMapper接口，用于操作DiningTable实体类的数据。
 */
@Mapper
public interface DiningTableMapper {

    /**
     * 插入一个新的餐桌记录到数据库。
     *
     * @param diningTable 包含要插入的餐桌信息的DiningTable对象。
     */
    @Insert("INSERT INTO dining_table (capacity, type_code, status) VALUES (#{capacity}, #{typeCode}, #{status})")
    void insert(DiningTable diningTable);

    /**
     * 根据餐桌ID删除一条餐桌记录。
     *
     * @param id 要删除的餐桌的ID。
     */
    @Delete("DELETE FROM dining_table WHERE id = #{id}")
    void deleteById(Long id);

    /**
     * 根据ID修改餐桌状态。
     *
     * @param id 餐桌ID。
     * @param status 目标状态。
     */
    @Update("UPDATE dining_table SET status = #{status} WHERE id = #{id}")
    void updateStatusById(Long id, Integer status);

    /**
     * 根据ID查询餐桌。
     *
     * @param id 餐桌ID。
     * @return DiningTable对象。
     */
    @Select("SELECT * FROM dining_table WHERE id = #{id}")
    DiningTable selectById(Long id);

    /**
     * 查询所有餐桌，根据“容纳人数”升序排列、ID升序排列。
     *
     * @return 餐桌列表。
     */
    @Select("SELECT * FROM dining_table ORDER BY capacity ASC, id ASC")
    List<DiningTable> list();

}